package pe.gob.mintra.trabajadoreshogar.daoimpl;


import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import pe.gob.mintra.trabajadoreshogar.bean.Usuario;
import pe.gob.mintra.trabajadoreshogar.bean.Usuxcla;
import pe.gob.mintra.trabajadoreshogar.dao.UsuarioDAO;
import pe.gob.mintra.trabajadoreshogar.factory.MyBatisConnectionFactory;
import pe.gob.mintra.trabajadoreshogar.util.Encriptar;


public class UsuarioDAOImp implements UsuarioDAO {
	
	
	private SqlSessionFactory sqlSessionFactory;

	public UsuarioDAOImp() {
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}

	@Override
	public Usuario listarUsuario(Usuario objUsuario) {
		
	SqlSession session = sqlSessionFactory.openSession();
	
	Usuario usuario= null;
	Usuario usuarioValidado=null;
	Encriptar objEncriptar= new Encriptar();
	
		try{

			
			usuario=(Usuario)session.selectOne("Usuario.listarUsuario",objUsuario);
			
			if(usuario!=null){
				
				String claveDesencriptada=objEncriptar.Desencriptar(usuario.getV_codusu(), usuario.getV_passusu());
				
				if(claveDesencriptada.equals(objUsuario.getV_passusu())){
					usuarioValidado=usuario;
					usuarioValidado.setV_passdes(claveDesencriptada);
				}
				
			}
			
		}catch(Exception ex){
			
		}finally{
			session.close();
		}
		return usuarioValidado;
		
	}

	@Override
	public void actualizarUsuario(Usuario objUsuario) {
		SqlSession session = sqlSessionFactory.openSession();

		try {
			
			session.update("Usuario.actualizarUsuario",objUsuario);
		} 
		catch(Exception ex){
			System.out.println(ex.getMessage());
			session.rollback();
			
		}
		finally {
			session.close();
		}
		
	}

	@Override
	public List<Usuxcla> listarUsuxcla(Usuario objUsuario) {

		List<Usuxcla> lstUsuxcla= new ArrayList<Usuxcla>();

		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstUsuxcla = (List<Usuxcla>) session
					.selectList("Usuario.listarUsuxcla",objUsuario);
		}catch(Exception ex){
			
		}finally{
			session.close();
		}
		

		return lstUsuxcla;
	}

	@Override
	public List<Usuario> listarLiquidadores() {
		
		List<Usuario> lstLiquidadores= new ArrayList<Usuario>();

		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstLiquidadores = (List<Usuario>) session
					.selectList("Usuario.listarLiquidadores");
		}catch(Exception ex){
			
		}finally{
			session.close();
		}
		

		return lstLiquidadores;
	}

	

}
